#pragma once

#include <cstdint>
#include <list>
#include <array>
#include <vector>
#include <vulkan/vulkan.hpp>

typedef uint8_t u8;
typedef uint16_t u16;
typedef uint32_t u32;
typedef uint64_t u64;

typedef int8_t i8;
typedef int16_t i16;
typedef int32_t i32;
typedef int64_t i64;

typedef float f32;
typedef double f64;

typedef std::string string;
typedef const char *cstr;

template<typename T>
using vector = std::vector<T>;

template<typename T>
using list = std::list<T>;

template<typename T, u32 N>
using array = std::array<T, N>;

template<typename T>
using optional = std::optional<T>;


#define MAX_U32 ((u32)-1)
